#!/bin/bash
#script name: network_check.sh

#参数定义
localip="127.0.0.1"
gatewayip=""
dnsip=""
configfile="/root/network/net.txt"

function ping0() {
  ping $1 -c3
  if [ $? -eq 0 ]; then
    return 1
  else
    return 0
  fi
}

function telnet0() {
  for net in `cat ${configfile}`
  do
    ip=`echo $net | awk -F ':' '{print $1}'`
    port=`echo $net | awk -F ':' '{print $2}'`

    #echo $ip $port

    #`telnet $ip $port > tt.txt`
    `echo -e '\xldclose\x0d' | timeout --signal=9 3 telnet $ip $port > tt.txt`
    s=$(cat tt.txt | grep "Escape character is '^]'")
    if [ -n "$s" ]
    then
      echo -e "\e[32m 主机 $localip 到主机 $ip $port 的服务网络可达\e[0m"
    else
      echo -e "\e[31m 主机 $localip 到主机 $ip $port 的服务网络不可达\e[0m"
    fi
    `exit`
  done
}

#获取基本信息
function baseinf_get() {
  #获取本机IP地址
  localip=$(ifconfig | grep netmask | grep -v 127.0.0.1 | awk '{ print $2 }')

  #获取网关IP地址
  gatewayip=$(route -n | grep "0.0.0.0" | awk '{ print $2 }' | grep -v "0.0.0.0")

  #获取DNS地址
  dnsip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')

  echo -e "本服务器的网卡IP地址为:\n\e[32m $localip \e[0m"
  echo -e "本服务器的网关IP地址为:\n\e[32m $gatewayip \e[0m"
  echo -e "本服务器的DNS IP地址为:\n\e[32m $dnsip \e[0m"
}

#检测主机到自己网卡的网络连通性
function netcardcheck() {
  ping0 $localip
  if [ $? -eq 1 ]; then
    echo -e "\e[32m 主机到网卡 $localip 网络可达\e[0m"
  else
    echo -e "\e[31m 主机到网卡 $localip 网络不可达\e[0m"
  fi
}

#检测主机到网关的网络连通性
function gatewaycheck() {
  ping0 $gatewayip
  if [ $? -eq 1 ]; then
    echo -e "\e[32m 主机 $localip 到网关 $gatewayip 网络可达\e[0m"
  else
    echo -e "\e[31m 主机 $localip 到网关 $gatewayip 网络不可达\e[0m"
  fi
}

#检测主机到互联网公网IP的连通性
function internetipcheck() {
  internetip=114.114.114.114
  ping0 $internetip
  if [ $? -eq 1 ]; then
    echo -e "\e[32m 主机 $localip 到IP地址 $internetip 网络可达\e[0m"
  else
    echo -e "\e[31m 主机 $localip 到IP地址 $internetip 网络不可达\e[0m"
  fi
}

function main() {
  echo -e "开始进行网络检查..."
  baseinf_get
  #netcardcheck
  #gatewaycheck
  internetipcheck
  telnet0
}

main
